package com.ahorresas.modelo.daos;

import com.ahorresas.conexion.Conexion;
import com.ahorresas.modelo.beans.CuotaBean;
import com.ahorresas.modelo.sqls.CuotaSql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class CuotaDao {
    
    Conexion conexion = new Conexion();
    Connection con;
    CuotaSql sql = new CuotaSql();
    
    public CuotaBean buscarCuota(String idCuota){
        con = conexion.getConexion();
        CuotaBean cuota = null;
        try {
            PreparedStatement ps = con.prepareStatement(sql.buscarCuota());
            ps.setString(1, idCuota);
            
            ResultSet resultado = ps.executeQuery();
            if(resultado.next()){
                cuota = new CuotaBean();
                cuota.setNumero(resultado.getInt("numero"));
                cuota.setIdPrestamo(resultado.getInt("id_prestamo"));
                cuota.setValorCuota(resultado.getDouble("valor_cuota"));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        finally{
            conexion.cerrarConexion(con);
        }
        return cuota;
    }
    
    public List<CuotaBean> listarCuotas(){
        con = conexion.getConexion();
        List<CuotaBean> listaCuotas = new ArrayList<>();
        CuotaBean cuota = null;
        try {
            PreparedStatement ps = con.prepareStatement(sql.listarCuotas());
            ResultSet resultado = ps.executeQuery();
            while(resultado.next()){
                cuota = new CuotaBean();
                cuota.setNumero(resultado.getInt("numero"));
                cuota.setIdPrestamo(resultado.getInt("id_prestamo"));
                cuota.setValorCuota(resultado.getDouble("valor_cuota"));
                
                listaCuotas.add(cuota);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally{
            conexion.cerrarConexion(con);
        }
        return listaCuotas;
    }
    
    public int crearCuota(CuotaBean cuota){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.crearCuota());
            ps.setInt(1, cuota.getNumero());
            ps.setInt(2, cuota.getIdPrestamo());
            ps.setDouble(3, cuota.getValorCuota());
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        } 
        return resultado;
    }
    
    public int modificarCuota(CuotaBean cuota){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.modificarCuota());
            ps.setDouble(1, cuota.getValorCuota());
            ps.setInt(2, cuota.getNumero());
            ps.setInt(3, cuota.getIdPrestamo());
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        }
        return resultado;
    }
    
    public int eliminarCuota(Integer idCuota){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.eliminarCuota());
            ps.setInt(1, idCuota);
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        }
        return resultado;
    }
}